tqdm 是 Python 的一個第三方庫,用於顯示迴圈或任務的進度條,讓開發者可以更直觀地了解程序執行的進度。這在執行長時間運行的任務(如迴圈處理、大型文件的讀寫、爬蟲等)時非常有用。
安裝
要使用 tqdm,需要先安裝:pip install tqdm
基本用法
tqdm 可以直接用在 for 迴圈中。
範例:簡單進度條
from tqdm import tqdm
import time
for i in tqdm(range(10)):
time.sleep(0.5) # 模擬耗時任務
執行結果會顯示一個進度條:
50%|███████████ | 5/10 [00:02<00:02, 2.00it/s]
for i in tqdm(range(10), desc="Processing"):
time.sleep(0.5)
3-2. 處理數據集合:可以使用 tqdm 包裝任何可迭代對象。
data = [1, 2, 3, 4, 5]
for item in tqdm(data, desc="Loading data"):
time.sleep(0.5)
3-3. 手動更新進度:適合用於非迴圈任務。
from tqdm import tqdm
import time
with tqdm(total=100) as pbar:
for i in range(10):
time.sleep(0.5)
pbar.update(10) # 每次更新進度條 10%
```
3-4. 結合函數:tqdm 可以直接用於函數式處理。
from tqdm import tqdm
import time
results = [x**2 for x in tqdm(range(1000), desc="Calculating squares")]
3-5. 嵌套進度條:對於多層迴圈,可以使用嵌套的進度條:
from tqdm import tqdm
import time
for i in tqdm(range(3), desc="Outer loop"):
for j in tqdm(range(5), desc="Inner loop", leave=False):
time.sleep(0.1)
#### 特性
- 進度顯示豐富
包含當前進度、耗時、估計剩餘時間、每秒處理速度等信息。
例
Processing: 50%|█████ | 5/10 [00:02<00:02, 2.00it/s]
- 高度自定義
支持自定義進度條樣式、長度、顏色等。
- 多線程和多進程支持
可以用於並行處理任務。
- 支持多平台
在大多數終端和 Jupyter Notebook 中均可正常顯示。
#### 與其他庫結合
1. 結合 Pandas
在處理 DataFrame 時顯示進度條。
import pandas as pd
from tqdm import tqdm
tqdm.pandas(desc="Processing rows")
df = pd.DataFrame({'a': range(100)})
df['b'] = df['a'].progress_apply(lambda x: x**2)
2. 結合 asyncio
用於異步任務的進度顯示。
import asyncio
from tqdm.asyncio import tqdm
async def async_task(n):
await asyncio.sleep(0.5)
return n
async def main():
tasks = [async_task(i) for i in range(10)]
results = [await t for t in tqdm(asyncio.as_completed(tasks), total=len(tasks))]
print(results)
asyncio.run(main())
#### 常用參數
| 參數名稱 | 說明 | 範例 |
|----------|--------------------------------|------------------------------------------|
| **desc** | 進度條前的描述文字 | `tqdm(range(10), desc="Loading")` |
| **total** | 設置進度條總數量(適用於手動更新) | `tqdm(total=100)` |
| **leave** | 任務結束後是否保留進度條 | `tqdm(range(10), leave=False)` |
| **ncols** | 設置進度條寬度 | `tqdm(range(10), ncols=80)` |
| **unit** | 單位顯示 | `tqdm(range(10), unit="files")` |
#### 小結
tqdm 是一個功能強大且簡單易用的工具,用於讓程序的執行進度一目了然。無論是處理迴圈還是批量任務,它都能顯著提升用戶體驗,並適合與各種 Python 庫結合使用。